package com.itheima.shop.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * @author songjun
 * @date 2018/7/17.
 */
public interface DAO<T> {
    /**
     * 执行insert、update、delete操作
     *
     * @param connection:获得连接
     * @param sql:SQL语句
     * @param args:sql参数
     * @return
     */
    int update(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * 查询单个对象
     * @param connection:获得连接
     * @param sql:sql语句
     * @param args:参数
     * @return:返回对象
     * @throws SQLException
     */
    T getOne(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * 获得对象集合
     *
     * @param connection
     * @param sql
     * @param args
     * @return
     */
    List<T> getList(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * 获得一个值
     *
     * @param connection
     * @param sql
     * @param args
     * @param <E>:值类型
     * @return
     */
    <E> E getForValue(Connection connection, String sql, Object... args) throws SQLException;

    /**
     * @param connection
     * @param sql
     * @param args
     * @return
     */
    int[] batch(Connection connection, String sql, Object[]... args) throws SQLException;
}
